GtkCssStylePropertyPrintFunc print_value,
GtkCssStylePropertyComputeFunc compute_value,
GtkCssStylePropertyQueryFunc query_value,
+ GtkCssStylePropertyAssignFunc assign_value,
GtkCssStylePropertyEqualFunc equal_func,
GtkCssValue * initial_value)
{
g_assert (initial_value != NULL);
g_assert (parse_value != NULL);
g_assert (value_type == G_TYPE_NONE || query_value != NULL);
+ g_assert (value_type == G_TYPE_NONE || assign_value != NULL);
node = g_object_new (GTK_TYPE_CSS_STYLE_PROPERTY,
"value-type", value_type,
if (compute_value)
node->compute_value = compute_value;
node->query_value = query_value;
+ node->assign_value = assign_value;
if (equal_func)
node->equal_func = equal_func;
_gtk_css_value_init_gvalue (css_value, value);
}
+static GtkCssValue *
+assign_simple (GtkCssStyleProperty *property,
+ const GValue *value)
+{
+ return _gtk_css_value_new_from_gvalue (value);
+}
+
static void
query_length_as_int (GtkCssStyleProperty *property,
const GtkCssValue *css_value,
g_value_set_int (value, round (_gtk_css_number_value_get (css_value, 100)));
}
+static GtkCssValue *
+assign_length_from_int (GtkCssStyleProperty *property,
+ const GValue *value)
+{
+ return _gtk_css_number_value_new (g_value_get_int (value), GTK_CSS_PX);
+}
+
static GtkCssValue *
color_parse (GtkCssStyleProperty *property,
GtkCssParser *parser,
}
}
+static GtkCssValue *
+css_image_value_assign (GtkCssStyleProperty *property,
+ const GValue *value)
+{
+ g_warning ("FIXME: assigning images is not implemented");
+ return _gtk_css_value_new_take_image (NULL);
+}
+
static GtkCssValue *
font_size_parse (GtkCssStyleProperty *property,
GtkCssParser *parser,
NULL,
color_compute,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_symbolic_color (
gtk_symbolic_color_new_rgba (1, 1, 1, 1)));
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_double (10.0));
NULL,
color_compute,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_symbolic_color (
gtk_symbolic_color_new_rgba (0, 0, 0, 0)));
font_family_value_print,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_strv (g_strdupv (default_font_family)));
gtk_css_style_property_register ("font-style",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_enum (PANGO_TYPE_STYLE,
PANGO_STYLE_NORMAL));
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_enum (PANGO_TYPE_VARIANT,
PANGO_VARIANT_NORMAL));
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_enum (PANGO_TYPE_WEIGHT,
PANGO_WEIGHT_NORMAL));
shadow_value_compute,
NULL,
NULL,
+ NULL,
_gtk_css_shadow_value_new_none ());
gtk_css_style_property_register ("icon-shadow",
shadow_value_compute,
NULL,
NULL,
+ NULL,
_gtk_css_shadow_value_new_none ());
gtk_css_style_property_register ("box-shadow",
shadow_value_compute,
NULL,
NULL,
+ NULL,
_gtk_css_shadow_value_new_none ());
gtk_css_style_property_register ("margin-top",
NULL,
compute_margin,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-left",
NULL,
compute_margin,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-bottom",
NULL,
compute_margin,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("margin-right",
NULL,
compute_margin,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-top",
NULL,
compute_padding,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-left",
NULL,
compute_padding,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-bottom",
NULL,
compute_padding,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("padding-right",
NULL,
compute_padding,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
/* IMPORTANT: compute_border_width() requires that the border-width
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_style (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("border-top-width",
NULL,
compute_border_width,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-left-style",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_style (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("border-left-width",
NULL,
compute_border_width,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-bottom-style",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_style (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("border-bottom-width",
NULL,
compute_border_width,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("border-right-style",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_style (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("border-right-width",
NULL,
compute_border_width,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
border_corner_radius_value_print,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_corner_radius (&no_corner_radius));
gtk_css_style_property_register ("border-top-right-radius",
border_corner_radius_value_print,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_corner_radius (&no_corner_radius));
gtk_css_style_property_register ("border-bottom-right-radius",
border_corner_radius_value_print,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_corner_radius (&no_corner_radius));
gtk_css_style_property_register ("border-bottom-left-radius",
border_corner_radius_value_print,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_corner_radius (&no_corner_radius));
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_style (GTK_BORDER_STYLE_NONE));
gtk_css_style_property_register ("outline-width",
NULL,
compute_border_width,
query_length_as_int,
+ assign_length_from_int,
NULL,
_gtk_css_number_value_new (0.0, GTK_CSS_PX));
gtk_css_style_property_register ("outline-offset",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_int (0));
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_enum (GTK_TYPE_CSS_AREA, GTK_CSS_AREA_BORDER_BOX));
gtk_css_style_property_register ("background-origin",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_enum (GTK_TYPE_CSS_AREA, GTK_CSS_AREA_PADDING_BOX));
gtk_css_style_property_register ("background-size",
background_size_compute,
NULL,
NULL,
+ NULL,
_gtk_css_value_new_from_background_size (&default_background_size));
gtk_css_style_property_register ("background-position",
G_TYPE_NONE,
background_position_compute,
NULL,
NULL,
+ NULL,
_gtk_css_value_new_from_background_position (&default_background_position));
gtk_css_style_property_register ("border-top-color",
NULL,
color_compute,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
NULL,
color_compute,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
NULL,
color_compute,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
NULL,
color_compute,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
NULL,
color_compute,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_symbolic_color (
gtk_symbolic_color_ref (
background_repeat_value_print,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_enum (GTK_TYPE_CSS_BACKGROUND_REPEAT,
GTK_CSS_BACKGROUND_REPEAT |
css_image_value_print,
css_image_value_compute,
css_image_value_query,
+ css_image_value_assign,
NULL,
_gtk_css_value_new_take_image (NULL));
css_image_value_print,
css_image_value_compute,
css_image_value_query,
+ css_image_value_assign,
NULL,
_gtk_css_value_new_take_image (NULL));
gtk_css_style_property_register ("border-image-repeat",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_border_image_repeat (&border_image_repeat));
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_boxed (GTK_TYPE_BORDER, &border_of_ones));
gtk_css_style_property_register ("border-image-width",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_boxed (GTK_TYPE_BORDER, NULL));
gtk_css_style_property_register ("engine",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_theming_engine (gtk_theming_engine_load (NULL)));
gtk_css_style_property_register ("transition",
NULL,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_from_boxed (GTK_TYPE_ANIMATION_DESCRIPTION, NULL));
bindings_value_print,
NULL,
query_simple,
+ assign_simple,
NULL,
_gtk_css_value_new_take_binding_sets (NULL));
}